package 算法.leetcode.offer;

import java.util.Arrays;

/**
 * 输入整数数组 arr ，找出其中最小的 k 个数。例如，输入4、5、1、6、2、7、3、8这8个数字，则最小的4个数字是1、2、3、4。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：arr = [3,2,1], k = 2
 * 输出：[1,2] 或者 [2,1]
 * 示例 2：
 *
 * 输入：arr = [0,1,2,1], k = 1
 * 输出：[0]
 * @author lchenglong
 * @date 2022/3/19
 */
public class Offer40 {

    public static void main(String[] args) {
        int[] arr = new int[]{3,2,1};
        Offer40 instance = new Offer40();
        int[] ans = instance.getLeastNumbers2(arr, 2);
        System.out.println(Arrays.toString(ans));
        
    }
    public int[] getLeastNumbers(int[] arr, int k) {
        if (arr == null|| arr.length == 0 )return new int[0];
        for (int i=0;i<k;i++) {
            int x = arr[i];
            int cur = 0;
            for (int j=i;j<arr.length;j++){
                if (arr[j]<=x){
                    x = arr[j];
                    cur = j;
                }
            }
            int tmp = arr[i];
            arr[i] = x;
            arr[cur] = tmp;

        }
        int[] ans = new int[k];
        for (int i=0;i<k;i++)ans[i] = arr[i];
        return ans;
    }

    public int[] getLeastNumbers2(int[] arr, int k) {
        if (arr == null|| arr.length == 0 )return new int[0];
        Arrays.sort(arr);
        int[] ans = new int[k];
        for (int i=0;i<k;i++) {
            ans[i] = arr[i];
        }
        return ans;
    }
}
